/* ========================================================================= */
/* ------------------------------------------------------------------------- */
/*!
  \file			pgitem.cc
  \date			Aug 2012
  \author		TNick

  \brief		Contains the implementation of PgItem class


*//*


 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Please read COPYING and README files in root folder
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* ------------------------------------------------------------------------- */
/* ========================================================================= */
//
//
//
//
/*  INCLUDES    ------------------------------------------------------------ */

#include	<cpg/cpg.h>

#include	<cpg/preferences/prefs.h>
#include	<cpg/properties/propbase.h>

#include	<cpg/logic/cpgdoc.h>
#include	<cpg/logic/pgspace.h>
#include	<cpg/logic/pglayer.h>
#include	<cpg/logic/pgitem.h>

#include	"pgitem.h"


/*  INCLUDES    ============================================================ */
//
//
//
//
/*  DEFINITIONS    --------------------------------------------------------- */

using namespace cpg;

/*  DEFINITIONS    ========================================================= */
//
//
//
//
/*  DATA    ---------------------------------------------------------------- */

/*  DATA    ================================================================ */
//
//
//
//
/*  CLASS    --------------------------------------------------------------- */

/* ------------------------------------------------------------------------- */
PgItem::PgItem	( PgLayer * ly, PgSpace * spc )
{
	layer_ = ly;
	space_ = spc;
	block_ = NULL;
	color_ = PgColor::FOREGROUND;
	ln_patt_ = PgLnPattern::SOLID;
	ln_weight_ = PgLnWeight::WEIGHT_SINGLE;
	ln_scale_ = PgLnPattScale::SCALE_1;
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
PgItem::~PgItem	( void )
{
	/* stub */
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
CpgDoc *					PgItem::document		( void )  const
{
	if ( space_ == NULL )
		return NULL;
	return space_->document();
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
bool					PgItem::insert			( void )
{
	if ( layer_ == NULL )
	{
		Q_ASSERT( false );
		return false;
	}
	if ( space_ == NULL )
	{
		Q_ASSERT( false );
		return false;
	}
	layer_->addItem( space_, this );
	return true;
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
bool					PgItem::extract		( void )
{
	/*int		i;*/
	if ( layer_ == NULL )
	{
		Q_ASSERT( false );
		return false;
	}
	if ( space_ == NULL )
	{
		Q_ASSERT( false );
		return false;
	}
	layer_->remItem( space_, this );

	/** @todo selection sets
	foreach( ItemSel * sl, space_->selections() )	{
		i = sl->index( this );
		if ( i != -1 )
		{
			sl->remove( i );
		}
	} */

	return true;
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
bool				PgItem::setCommonProp			( PropIndex idx, int value)
{
	Q_UNUSED( value );
	Q_UNUSED( idx );
	/** @todo implement after global changers are in place (CpgLibrary?)*/
//	switch	(idx)		{
//	case	PId_COLOR:		{
//		/*changePrimaryColor( value );*/
//		break; }
//	case	PId_LINE_WEIGHT:	{
//		/*changeLineWeight( value );*/
//		break; }
//	case	PId_LINE_PATT:	{
//		/*changeLinePatt( value );*/
//		break; }
//	default:
//		return false;
//	}
	return true;
}
/* ========================================================================= */



/*  CLASS    =============================================================== */
//
//
//
//
/* ------------------------------------------------------------------------- */
/* ========================================================================= */
